/**
 * 用于获取指定范围内的随机整数
 * @param {number} a 随机数范围数字
 * @param {number} b 随机数范围数字 - 默认值为0
 * @returns 范围内的随机整数
 */
function getRandom(a, b = 0) {
    var max = a
    var min = b
    if(b>a) {
        max = b
        min = a
    }
    return parseInt(Math.random() * (max - min)) + min
}
/************ 使用示例 ************/
// var n = getRandom(50, 30)
// console.log(n);

/**
 * 获取随机颜色的函数
 * @param {boolean} hex 是否需要16进制的颜色值
 * @returns rgb颜色值字符串或16进制颜色值字符串
 */
function getColor(hex) {
    var arr = []
    var str = '#'
    for(var i=0; i<3; i++) {
        var num = getRandom(0, 256)
        arr.push(num)

        num = num.toString(16)
        num = num.length === 1 ? '0' + num : num
        str += num
    }
    if(hex) {
        return str
    }
    return 'rgb(' + arr.join() + ')'
}
/************ 调用示例 ************/
// var color = getColor(true)
// console.log(color);
// box.style.backgroundColor = color
/**
 * 批量设置样式的函数
 * @param {node} element 要设置样式的标签元素
 * @param {object} obj 要设置的样式的css键值对组成的对象
 */
// function setStyle(element, obj) {
//     for(var key in obj) {
//         element.style[key] = obj[key]
//     }
// }
function setStyle(element, obj) {
    var str = ''
    for(var key in obj) {
        str += key + ':' + obj[key] + ';'
    }
    element.style.cssText = str
}
/************** 调用示例 *****************/
/* setStyle(document.body, {
    width: '100%',
    height: '100%',
    background: 'url('+imgPath+') no-repeat 0 0 / 100% 100%'
}) */
/**
 * 动画函数
 * @param {node} ele 产生动画的标签元素
 * @param {object} obj 要进行动画的css属性和对应的目标值(目标值是数字)
 * @param {function} fn 当所有属性的动画结束后，要执行的函数
 */
function animate(ele, obj, fn = function() {}) {
    var k = 0
    for(let key in obj) {
        k++
        let target = obj[key]
        let l = getComputedStyle(ele)[key] 
        if(key === 'opacity') {
            target *= 100
        }
        let timer = setInterval(function() {
            if(key === 'opacity') {
                l *= 100
            }
            l = parseInt(l) 
            var speed = (target - l) / 20 
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed) 
            l += speed 
            if(key === 'opacity') ele.style[key] = l / 100
            else ele.style[key] = l + 'px'
            if(l === target) {
                clearInterval(timer)
                if(--k === 0) fn()
            }
        }, 20)
    }
}
/*************** 调用示例 *************/
// btn.onclick = function() {
//     animate(box, {
//         left: 500,
//         top: 300,
//         width: 200
//     }, function() {
//         color.style.backgroundColor = 'red'
//     })
// }